package actions;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

import modelo.Comentario;
import modelo.Tesina;
import modelo.Votacion;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.SessionAware;

import DAO.ComentarioDAO;
import DAO.FactoryDAO;
import DAO.TesinaDAO;
import DAO.VotacionDAO;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@Action(value = "/VotarTesinaPositivo")
@Result(location = "/jsp/principal/frontend.jsp", name = "SUCCESS")
public class VotarTesinaPositivoAction extends ActionSupport implements
		SessionAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Long idTesis;
	private Collection<Comentario> collComentarios = new ArrayList<Comentario>();
	private String votoPos;
	private String votoNeg;
	private Map<String, Object> session;
	private Tesina tesis = new Tesina();

	public String execute() {

		TesinaDAO tesinaDAO = FactoryDAO.getTesinaDAO();
		tesis = tesinaDAO.buscarTesis(getIdTesis());
		tesis.setVotoPositivos(Integer.toString(Integer.parseInt(tesis
				.getVotoPositivos()) + 1));
		tesinaDAO.modificarTesina(tesis);
		ComentarioDAO comentarioDAO = FactoryDAO.getComentarioDAO();
		collComentarios = comentarioDAO
				.obtenerComentariosporIdTesis(getIdTesis());
		// manejos de votos
		votoNeg = tesis.getVotoNegativos();
		votoPos = tesis.getVotoPositivos();
		session = ActionContext.getContext().getSession();
		session.put("votacion", "/jsp/layoutVerTesina/noPuedeVotar.jsp");
		// guardo el voto
		this.guardarVotacion();
		
		session.put("dinamico", "true");
		return "SUCCESS";
	}

	private void guardarVotacion() {

		Votacion v = new Votacion();
		v.setIdTesina(getIdTesis());
		v.setIdUsuario((Long) session.get("id"));
		v.setUsuario((String) session.get("name"));
		v.setTesina(tesis.getTitulo());
		VotacionDAO vDAO = FactoryDAO.getVotacionDAO();
		vDAO.guardarVotacion(v);
		
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		// TODO Auto-generated method stub

	}

	public Long getIdTesis() {
		return idTesis;
	}

	public void setIdTesis(Long idTesis) {
		this.idTesis = idTesis;
	}

	public Collection<Comentario> getCollComentarios() {
		return collComentarios;
	}

	public void setCollComentarios(Collection<Comentario> collComentarios) {
		this.collComentarios = collComentarios;
	}

	public String getVotoPos() {
		return votoPos;
	}

	public void setVotoPos(String votoPos) {
		this.votoPos = votoPos;
	}

	public String getVotoNeg() {
		return votoNeg;
	}

	public void setVotoNeg(String votoNeg) {
		this.votoNeg = votoNeg;
	}

	public Tesina getTesis() {
		return tesis;
	}

	public void setTesis(Tesina tesis) {
		this.tesis = tesis;
	}

}
